home *** CD-ROM | disk | FTP | other *** search
/ Network PC / Network PC.iso / amiga utilities / communication / bbs / termv4.6 / extras / source / gtlayout-source.lha / LTP_Storage.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-03-18  |  3.8 KB  |  243 lines

  1. /*
  2. **    GadTools layout toolkit
  3. **
  4. **    Copyright © 1993-1996 by Olaf `Olsen' Barthel
  5. **        Freely distributable.
  6. **
  7. **    :ts=4
  8. */
  9.  
  10. #ifndef _GTLAYOUT_GLOBAL_H
  11. #include "gtlayout_global.h"
  12. #endif
  13.  
  14. VOID
  15. LTP_GetStorage(ObjectNode *Node)
  16. {
  17.     if(Node->Storage)
  18.     {
  19.         LONG    Number = 0;
  20.         STRPTR    String = NULL;
  21.  
  22.         switch(Node->StorageType)
  23.         {
  24.             case STORAGE_BYTE:
  25.  
  26.                 Number = *(BYTE *)Node->Storage;
  27.                 break;
  28.  
  29.             case STORAGE_UBYTE:
  30.  
  31.                 Number = *(UBYTE *)Node->Storage;
  32.                 break;
  33.  
  34.             case STORAGE_WORD:
  35.  
  36.                 Number = *(WORD *)Node->Storage;
  37.                 break;
  38.  
  39.             case STORAGE_UWORD:
  40.  
  41.                 Number = *(UWORD *)Node->Storage;
  42.                 break;
  43.  
  44.             case STORAGE_LONG:
  45.  
  46.                 Number = *(LONG *)Node->Storage;
  47.                 break;
  48.  
  49.             case STORAGE_ULONG:
  50.  
  51.                 Number = *(ULONG *)Node->Storage;
  52.                 break;
  53.  
  54.             case STORAGE_STRPTR:
  55.  
  56.                 String = Node->Storage;
  57.                 break;
  58.         }
  59.  
  60.         switch(Node->Type)
  61.         {
  62.             case CHECKBOX_KIND:
  63.             case LISTVIEW_KIND:
  64.             case MX_KIND:
  65.             case CYCLE_KIND:
  66.             case PALETTE_KIND:
  67.             case SLIDER_KIND:
  68.             case SCROLLER_KIND:
  69. #if defined(DO_POPUP_KIND) && defined(DO_BOOPSI_KIND)
  70.             case POPUP_KIND:
  71. #endif
  72. #if defined(DO_TAB_KIND) && defined(DO_BOOPSI_KIND)
  73.             case TAB_KIND:
  74. #endif
  75. #ifdef DO_GAUGE_KIND
  76.             case GAUGE_KIND:
  77. #endif
  78.  
  79. #ifdef DO_TAPEDECK_KIND
  80.             case TAPEDECK_KIND:
  81. #endif    /* DO_TAPEDECK_KIND */
  82.  
  83. #ifdef DO_FRACTION_KIND
  84.             case FRACTION_KIND:
  85. #endif
  86.                 Node->Current = Number;
  87.                 break;
  88.  
  89.             case STRING_KIND:
  90. #ifdef DO_PASSWORD_KIND
  91.             case PASSWORD_KIND:
  92. #endif
  93.                 Node->Special.String.String = String;
  94.                 break;
  95.  
  96.             case INTEGER_KIND:
  97.  
  98.                 Node->Special.Integer.Number = Number;
  99.                 break;
  100. #ifdef DO_LEVEL_KIND
  101.             case LEVEL_KIND:
  102.  
  103.                 Node->Special.Level.Level = Number;
  104.                 break;
  105. #endif    /* DO_LEVEL_KIND */
  106.         }
  107.     }
  108. }
  109.  
  110.  
  111. /*****************************************************************************/
  112.  
  113.  
  114. VOID
  115. LTP_PutStorage(ObjectNode *Node)
  116. {
  117.     if(Node->Storage)
  118.     {
  119.         LONG    Number = 0;
  120.         STRPTR    String = NULL;
  121.  
  122.         switch(Node->Type)
  123.         {
  124.             case CHECKBOX_KIND:
  125.             case LISTVIEW_KIND:
  126.             case MX_KIND:
  127.             case CYCLE_KIND:
  128.             case PALETTE_KIND:
  129.             case SLIDER_KIND:
  130.             case SCROLLER_KIND:
  131. #if defined(DO_POPUP_KIND) && defined(DO_BOOPSI_KIND)
  132.             case POPUP_KIND:
  133. #endif
  134. #if defined(DO_TAB_KIND) && defined(DO_BOOPSI_KIND)
  135.             case TAB_KIND:
  136. #endif
  137. #ifdef DO_GAUGE_KIND
  138.             case GAUGE_KIND:
  139. #endif
  140.  
  141. #ifdef DO_TAPEDECK_KIND
  142.             case TAPEDECK_KIND:
  143. #endif    /* DO_TAPEDECK_KIND */
  144.                 Number = Node->Current;
  145.                 break;
  146.  
  147. #ifdef DO_FRACTION_KIND
  148.             case FRACTION_KIND:
  149.  
  150.                 if(Node->Host)
  151.                     Number = (LONG)LT_String2Fixed(((struct StringInfo *)Node->Host->SpecialInfo)->Buffer);
  152.                 else
  153.                     Number = Node->Current;
  154.  
  155.                 break;
  156. #endif
  157.  
  158. #ifdef DO_PASSWORD_KIND
  159.             case PASSWORD_KIND:
  160.  
  161.                 String = Node->Special.String.RealString;
  162.                 break;
  163. #endif
  164.  
  165.             case STRING_KIND:
  166.  
  167.                 if(Node->Host)
  168.                     String = ((struct StringInfo *)Node->Host->SpecialInfo)->Buffer;
  169.                 else
  170.                     String = Node->Special.String.String;
  171.  
  172.                 break;
  173.  
  174.             case INTEGER_KIND:
  175.  
  176.                 if(Node->Host)
  177.                     Number = ((struct StringInfo *)Node->Host->SpecialInfo)->LongInt;
  178.                 else
  179.                     Number = Node->Special.Integer.Number;
  180.  
  181.                 break;
  182. #ifdef DO_LEVEL_KIND
  183.             case LEVEL_KIND:
  184.  
  185.                 Number = Node->Special.Level.Level;
  186.                 break;
  187. #endif    /* DO_LEVEL_KIND */
  188.         }
  189.  
  190.         switch(Node->StorageType)
  191.         {
  192.             case STORAGE_BYTE:
  193.  
  194.                 if(!String)
  195.                     *(BYTE *)Node->Storage = (BYTE)Number;
  196.  
  197.                 break;
  198.  
  199.             case STORAGE_UBYTE:
  200.  
  201.                 if(!String)
  202.                     *(UBYTE *)Node->Storage = (UBYTE)Number;
  203.  
  204.                 break;
  205.  
  206.             case STORAGE_WORD:
  207.  
  208.                 if(!String)
  209.                     *(WORD *)Node->Storage = (WORD)Number;
  210.  
  211.                 break;
  212.  
  213.             case STORAGE_UWORD:
  214.  
  215.                 if(!String)
  216.                     *(UWORD *)Node->Storage = (UWORD)Number;
  217.  
  218.                 break;
  219.  
  220.             case STORAGE_LONG:
  221.  
  222.                 if(!String)
  223.                     *(LONG *)Node->Storage = (LONG)Number;
  224.  
  225.                 break;
  226.  
  227.             case STORAGE_ULONG:
  228.  
  229.                 if(!String)
  230.                     *(ULONG *)Node->Storage = (ULONG)Number;
  231.  
  232.                 break;
  233.  
  234.             case STORAGE_STRPTR:
  235.  
  236.                 if(String)
  237.                     strcpy(Node->Storage,String);
  238.  
  239.                 break;
  240.         }
  241.     }
  242. }
  243.